package com.zs.propertymanage.controller;

import com.zs.propertymanage.annotation.SystemLog;
import com.zs.propertymanage.dataObj.R;
import com.zs.propertymanage.dataObj.entity.Manager;
import com.zs.propertymanage.service.impl.ManagerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/manager")
@CrossOrigin
public class ManagerController {

    @Autowired
    private ManagerService managerService;

    /**
     * 获取所有管理员信息
     *
     * @return R
     */
    @GetMapping("/plain")
    @ResponseBody
    public R getAllManagerWithPlain() {
        return managerService.getAllManagerWithPlain();
    }

    /**
     * 条件获取所有管理员信息
     *
     * @param search      根据名称模糊查询参数
     * @param currentPage 当前页
     * @param pageSize    每页大小
     * @return R
     */
    @GetMapping("")
    @ResponseBody
    public R getAllManagerWithCondition(String search, Integer currentPage, Integer pageSize) {
        return managerService.getAllManagerWithCondition(search, currentPage, pageSize);
    }

    /**
     * 添加管理员
     *
     * @param manager 管理员信息
     * @return R
     */
    @PostMapping("")
    @ResponseBody
    @SystemLog(name = "添加管理员")
    public R addManager(@RequestBody Manager manager) {
        return managerService.addManager(manager);
    }

    /**
     * 更新管理员
     *
     * @param manager 管理员信息
     * @return R
     */
    @PutMapping("")
    @ResponseBody
    @SystemLog(name = "更新管理员")
    public R updateManager(@RequestBody Manager manager) {
        return managerService.updateManager(manager);
    }

    /**
     * 删除管理员
     *
     * @param managerId 管理员id
     * @return R
     */
    @DeleteMapping("/{managerId}")
    @ResponseBody
    @SystemLog(name = "删除管理员")
    public R deleteManager(@PathVariable String managerId) {
        return managerService.deleteManagerById(managerId);
    }

    /**
     * 获取所有管理员角色
     *
     * @return R
     */
    @GetMapping("/role")
    @ResponseBody
    public R getAllManagerRole() {
        return managerService.getAllManagerRole();
    }

    // 添加管理员角色
    @PostMapping("/role")
    @ResponseBody
    @SystemLog(name = "添加管理员角色")
    public R addManagerRole(String roleName) {
        return managerService.addManagerRole(roleName);
    }

    // 删除管理员角色
    @DeleteMapping("role/{id}")
    @ResponseBody
    @SystemLog(name = "删除管理员角色")
    public R deleteManagerRoleById(@PathVariable Integer id) {
        return managerService.deleteManagerRoleById(id);
    }

}
